使用MSXML.DLL读写XML;
文件顶部加入 
#import "msxml3.dll"; 
usingnamespace MSXML2; 
//这两句作用是,在程序的文件夹下生成MSXML3.TLH和MSXML3.TLI两个文件; 
--------------------------------------------------------- 
创建一个XML文件; 
::CoInitialize(NULL); 
MSXML2::IXMLDOMDocumentPtr XMLDOC; 
MSXML2::IXMLDOMElementPtr XMLROOT; 
HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30)); 
if(!SUCCEEDED(HR)) 
{ 
  MessageBox("faild!!"); 
return; 
} 
XMLROOT = XMLDOC->createElement("ROOT"); 
XMLROOT->setAttribute("ID","12345");  //设置根标签的属性; 
XMLDOC->appendChild(XMLROOT); 
CString TMP; 
MSXML2::IXMLDOMElementPtr XMLNODE; 
for(int I=0;I<10;I++) 
{ 
  TMP.Format("%d",I); 
  XMLNODE = XMLDOC->createElement((_bstr_t)("NODE"+TMP)); 
  XMLNODE->put_text((_bstr_t)"NODETEXTS");//设置标签的文本内容; 
  XMLNODE->setAttribute("ID",(_variant_t)TMP);//设置标签的属性及内容;
  XMLNODE->setAttribute("NAME","NODENAME"); 
  XMLROOT->appendChild(XMLNODE); 
} 
XMLDOC->save("XMLTEST.XML"); 
XMLNODE.Release(); 
XMLROOT.Release(); 
XMLDOC.Release(); 
::CoUninitialize(); 
------------------------------------------------------------------ 
读取一个XML; 
::CoInitialize(NULL); 
MSXML2::IXMLDOMDocumentPtr XMLDOC;  
MSXML2::IXMLDOMElementPtr XMLROOT; 
MSXML2::IXMLDOMElementPtr XMLELEMENT; 
MSXML2::IXMLDOMNodeListPtr XMLNODES; //某个节点的所以字节点
MSXML2::IXMLDOMNamedNodeMapPtr XMLNODEATTS;//某个节点的所有属性;
MSXML2::IXMLDOMNodePtr XMLNODE; 
HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30)); 
if(!SUCCEEDED(HR)) 
{ 
  MessageBox("faild!!"); 
return; 
} 
XMLDOC->load("XMLTEST.XML"); 
XMLROOT = XMLDOC->GetdocumentElement();//获得根节点;
XMLROOT->get_childNodes(&XMLNODES);//获得根节点的所有子节点;
long XMLNODESNUM,ATTSNUM; 
XMLNODES->get_length(&XMLNODESNUM);//获得所有子节点的个数;
CString TMP; 
TMP.Format("%d",XMLNODESNUM); 
MessageBox(TMP); 
for(int I=0;I<XMLNODESNUM;I++) 
{ 
  XMLNODES->get_item(I,&XMLNODE);//获得某个子节点;
  XMLNODE->get_attributes(&XMLNODEATTS);//获得某个节点的所有属性;
  XMLNODEATTS->get_length(&ATTSNUM);//获得所有属性的个数;
for(int J=0;J<ATTSNUM;J++) 
  { 
   XMLNODEATTS->get_item(J,&XMLNODE);//获得某个属性;
   CString T1 = (char*)(_bstr_t)XMLNODE->nodeName; 
   CString T2 = (char*)(_bstr_t)XMLNODE->text; 
   MessageBox(T1+" = "+T2); 
  } 
//MessageBox((_bstr_t)XMLNODE->nodeName+": "+(_bstr_t)XMLNODE->text); 
} 
return; 
//XMLDOC->save("XMLTEST.XML"); 
XMLNODES.Release(); 
XMLNODE.Release(); 
XMLROOT.Release(); 
XMLDOC.Release(); 
::CoUninitialize(); 
--------------------------------------------------------- 
总结: 
XML文件档类型:MSXML2::IXMLDOMDocumentPtr; 
单个元素类型:MSXML2::IXMLDOMElementPtr; 
单个节点类型:MSXML2::IXMLDOMNodePtr; 
所有子节点类型:MSXML2::IXMLDOMNodeListPtr; 
所有属性类型:MSXML2::IXMLDOMNamedNodeMapPtr; 
获得节点个数的方法:get_length(); 
获得所有子节点的方法:get_childNodes(); 
获得指定节点的方法:get_item(索引号,单个节点类型变量); 
写入单个节点的文本内容方法:put_text((_bstr_t)"内容"); 
获得单个节点的文本内容属性:XMLNODE->text; 
获得单个属性的内容属性:XMLNODEATT->text; 
节点名的属性为:XMLNODE->nodeName; 
--------------------------------------------------------------- 
XML创建文件一般过程: 
::CoInitialize(NULL); 
HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30)); 
if(!SUCCEEDED(HR)) 
{ 
  MessageBox("faild!!"); 
return; 
} 
XMLROOT = XMLDOC->createElement("ROOT");//创建文件; 
操作文件..................... 
XMLDOC->save("XMLTEST.XML");//保存文件; 
XMLNODE.Release(); 
XMLROOT.Release(); 
XMLDOC.Release(); 
::CoUninitialize(); 
------------------------------------------------------------------------------ 
加载文件过程序: 
::CoInitialize(NULL); 
HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30)); 
if(!SUCCEEDED(HR)) 
{ 
  MessageBox("faild!!"); 
return; 
} 
XMLDOC->load("XMLTEST.XML"); 
文件操作......................... 
XMLDOC->save("XMLTEST.XML");//可以保存对文件的修改;
XMLNODES.Release(); 
XMLNODE.Release(); 
XMLROOT.Release(); 
XMLDOC.Release(); 
::CoUninitialize(); 
使用MSXML.DLL读写XML;
 
文件顶部加入
 
#import "msxml3.dll";
 
using namespace MSXML2;
 
//这两句作用是,在程序的文件夹下生成MSXML3.TLH和MSXML3.TLI两个文件;
 
---------------------------------------------------------
 
创建一个XML文件;
 
::CoInitialize(NULL);
MSXML2::IXMLDOMDocumentPtr XMLDOC;
MSXML2::IXMLDOMElementPtr XMLROOT;
 
HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30));
if(!SUCCEEDED(HR))
{
  MessageBox("faild!!");
  return;
}
XMLROOT = XMLDOC->createElement("ROOT");
XMLROOT->setAttribute("ID","12345");  //设置根标签的属性;
XMLDOC->appendChild(XMLROOT);
CString TMP;
MSXML2::IXMLDOMElementPtr XMLNODE;
for(int I=0;I<10;I++)
{
  TMP.Format("%d",I);
  XMLNODE = XMLDOC->createElement((_bstr_t)("NODE"+TMP));
  XMLNODE->put_text((_bstr_t)"NODETEXTS");//设置标签的文本内容;
  XMLNODE->setAttribute("ID",(_variant_t)TMP);//设置标签的属性及内容;
  XMLNODE->setAttribute("NAME","NODENAME");
  XMLROOT->appendChild(XMLNODE);
}
XMLDOC->save("XMLTEST.XML");
XMLNODE.Release();
XMLROOT.Release();
XMLDOC.Release();
::CoUninitialize();
 
------------------------------------------------------------------
 
读取一个XML;
 
::CoInitialize(NULL);
MSXML2::IXMLDOMDocumentPtr XMLDOC; 
MSXML2::IXMLDOMElementPtr XMLROOT;
MSXML2::IXMLDOMElementPtr XMLELEMENT;
MSXML2::IXMLDOMNodeListPtr XMLNODES; //某个节点的所以字节点
MSXML2::IXMLDOMNamedNodeMapPtr XMLNODEATTS;//某个节点的所有属性;
MSXML2::IXMLDOMNodePtr XMLNODE;
HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30));
if(!SUCCEEDED(HR))
{
  MessageBox("faild!!");
  return;
}
XMLDOC->load("XMLTEST.XML");
XMLROOT = XMLDOC->GetdocumentElement();//获得根节点;
XMLROOT->get_childNodes(&XMLNODES);//获得根节点的所有子节点;
long XMLNODESNUM,ATTSNUM;
XMLNODES->get_length(&XMLNODESNUM);//获得所有子节点的个数;
CString TMP;
TMP.Format("%d",XMLNODESNUM);
MessageBox(TMP);
for(int I=0;I<XMLNODESNUM;I++)
{
  XMLNODES->get_item(I,&XMLNODE);//获得某个子节点;
  XMLNODE->get_attributes(&XMLNODEATTS);//获得某个节点的所有属性;
  XMLNODEATTS->get_length(&ATTSNUM);//获得所有属性的个数;
  for(int J=0;J<ATTSNUM;J++)
  {
   XMLNODEATTS->get_item(J,&XMLNODE);//获得某个属性;
   CString T1 = (char*)(_bstr_t)XMLNODE->nodeName;
   CString T2 = (char*)(_bstr_t)XMLNODE->text;
   MessageBox(T1+" = "+T2);
  }
  //MessageBox((_bstr_t)XMLNODE->nodeName+": "+(_bstr_t)XMLNODE->text);
}
return;
//XMLDOC->save("XMLTEST.XML");
XMLNODES.Release();
XMLNODE.Release();
XMLROOT.Release();
XMLDOC.Release();
::CoUninitialize();
 
---------------------------------------------------------
 
总结:
 
XML文件档类型:MSXML2::IXMLDOMDocumentPtr;
 
单个元素类型:MSXML2::IXMLDOMElementPtr;
 
单个节点类型:MSXML2::IXMLDOMNodePtr;
 
所有子节点类型:MSXML2::IXMLDOMNodeListPtr;
 
所有属性类型:MSXML2::IXMLDOMNamedNodeMapPtr;
 
获得节点个数的方法:get_length();
 
获得所有子节点的方法:get_childNodes();
 
获得指定节点的方法:get_item(索引号,单个节点类型变量);
 
写入单个节点的文本内容方法:put_text((_bstr_t)"内容");
 
获得单个节点的文本内容属性:XMLNODE->text;
 
获得单个属性的内容属性:XMLNODEATT->text;
 
节点名的属性为:XMLNODE->nodeName;
 
---------------------------------------------------------------
 
XML创建文件一般过程:
 
::CoInitialize(NULL);
 
HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30));
if(!SUCCEEDED(HR))
{
  MessageBox("faild!!");
  return;
}
XMLROOT = XMLDOC->createElement("ROOT");//创建文件;
 
操作文件.....................
 
XMLDOC->save("XMLTEST.XML");//保存文件;
XMLNODE.Release();
XMLROOT.Release();
XMLDOC.Release();
::CoUninitialize();
 
------------------------------------------------------------------------------
 
加载文件过程序:
 
::CoInitialize(NULL);
HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30));
if(!SUCCEEDED(HR))
{
  MessageBox("faild!!");
  return;
}
XMLDOC->load("XMLTEST.XML");
 
文件操作.........................
 
XMLDOC->save("XMLTEST.XML");//可以保存对文件的修改;
XMLNODES.Release();
XMLNODE.Release();
XMLROOT.Release();
XMLDOC.Release();
::CoUninitialize();